<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:foo="http://foo.org" xmlns:xs="http://www.w3.org/2001/XMLSchema"
	version="2.0">

	<xsl:output method="xml" version="1.0" encoding="UTF-8"
		indent="yes" omit-xml-declaration="no" />

	<xsl:template match="/">
		<xsl:element name="xml-instance">
			<xsl:apply-templates />
		</xsl:element>
	</xsl:template>

	<xsl:template match="/xs:schema/xs:element[@name]">
		<xsl:call-template name="build-instance" />
	</xsl:template>

	<xsl:template match="//xs:element/@ref">
	<found-ref>#####################################</found-ref>
	<!-- 
		<xsl:variable name="refName" select="." />
		
		<xsl:for-each select="//xs:element[@name=$refName]">
			<xsl:call-template name="build-instance" />
		</xsl:for-each> -->
	</xsl:template>


	<xsl:template name="build-instance">
		<xsl:element name="{./@name}">
			<xsl:choose>
				<xsl:when test="./@type">
					<xsl:variable name="typeName" select="./@type" />
					<xsl:for-each
						select="//xs:complexType[@name=$typeName]//xs:element[@name]">
						<xsl:call-template name="build-instance" />
					</xsl:for-each>
				</xsl:when>
				<xsl:otherwise>
					<xsl:for-each select=".//xs:element[@name]">
						<xsl:call-template name="build-instance" />
					</xsl:for-each>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:element>
	</xsl:template>




</xsl:stylesheet>

